<?php
	try {
		require_once '../../controller/controller.inc.php';
		$usuario->isAuthorizedView(Operacao::MOVIMENTACAO_SOLICITARRELOTACAO);
		
		$lista2 = NULL;
		$info = NULL;	    
	    
		if (isset($_GET['solicitacao1'])) {

		    $view = new ViewSolicitacaoRelotacao();
            
		    //TODO: Restringir as lotacoes que o NG é nucleogestorid da lotação destino
		    
            $result = $view->listar(array('campo' => 'solicitacaorelotacaoid', 'operador' => '=', 'valor' => $_GET['solicitacao1']));
            
            $solicitante1 = pg_fetch_object($result);
            $contrato1 = new Contrato($solicitante1->contratoid);
            
		    $candidato = new Candidato($solicitante1->candidatoid);
                
            $vaga = $candidato->getVagaAtual();
            if (!$vaga) {
                throw new Exception("Este funcionário não está mais vinculado a nenhuma vaga ativa");
            }
            
            $candidatoVaga = $vaga->getCandidatoVagaAtivo();
            $candidatoVaga->getStatusAtual();
            
            if ($candidatoVaga->getStatusAtual() == Status::Permutacao_Solicitada) {
                throw new Exception("Este funcionário já está solicitando uma permuta.");
            }
            
            if (!$solicitante1->salario) {
                throw new Exception("Este cargo não possui salário.");
            }
            
            if (!isset($_GET['solicitacao2'])) {
                
                # Pré-condições
            	# 1. Mesmo Cargo
            	# 2. Mesmo Salário
            	# 3. Mesmo órgao
            	# 4. Mesma empresa
            	# 5. Lotacaoorigem bate com lotacadestino
                $criterio = array();
                
                $ids = $usuario->listarContratosSQL();
                
                $criterio['campos'] = 'solicitacaorelotacaoid as ID, candidato, cargo, lotacaoorigem, lotacaodestino';
                $criterio['precondicao']  = 'contratoid IN (' . $ids . ') ';
                $criterio['precondicao'] .= 'AND datarelotacao = \'NAO RELOTADO\'';
                $criterio['precondicao']  = 'candidatovagaid <> ' . $solicitante1->candidatovagaid;
                $criterio['precondicao'] .= ' AND cargoid = ' . $solicitante1->cargoid;
                $criterio['precondicao'] .= ' AND salario = ' . $solicitante1->salario;
                $criterio['precondicao'] .= ' AND orgaoid = ' . $solicitante1->orgaoid;
                $criterio['precondicao'] .= ' AND empresaid = ' . $solicitante1->empresaid;
                $criterio['precondicao'] .= ' AND lotacaodestino = \'' . $solicitante1->lotacaoorigem . '\'';
            	
                $lista2 = $view->listar($criterio);
                
                if (pg_num_rows($lista2) == 0) {
                    $info = "Não existe nenhuma solicitação de relotação em condições de fazer a permuta com o Candidato 1.";
                }
            }
	        else { //Carrega a Vaga 2
                $result = $view->listar(array('campo' => 'solicitacaorelotacaoid', 'operador' => '=', 'valor' => $_GET['solicitacao2']));
                
                $solicitante2 = pg_fetch_object($result);
                $contrato2 = new Contrato($solicitante2->contratoid);
                
            }
        }
        
	    if (isset ($_POST["btnAcao"]))
	    {
	        switch($_POST["btnAcao"])
	        {				
	            case 'Permutar':
	                
	            	try {
		            	FluxoSolicitacaoRelotacao::solicitarPermuta($_POST['solicitacao1'], $_POST['solicitacao2']);
	            	    $message = 'solicitacaoencaminhada';
		            	header('Location: index.php?message=' . $message);
		            } 
	            	catch (exception $e) {
	            		$erro = $e->getMessage();
	            	}
	            	
	            	break;
	        }        
	    }
	    
	    if ( isset( $_GET['method'] ) AND $_GET['method'] == 'success' ){
	    	$sucesso = "Solicitação de Relotação criada com sucesso.";
	    }
	    elseif ( isset( $_GET['message' ] ) AND $_GET['message'] = 'solicitacaoencaminhada' ){
	        $sucesso = "Solicitação de Relotação encaminhada com sucesso.";
	    }
	} 
	catch(exception $e){
		$erro = $e->getMessage();
	}
?>